<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>1.ES6_class</title>
</head>
<body>
<script type="text/javascript">
  class Person{
      constructor(name,age) {
          this.name =name;
          this.age =age;
      }

      /*class内部定义的方法是定义在当前对象的原型上的 被实例化对象所使用*/
      getName(){
          return this.name;
      }

      setName(name){
          this.name =name;
      }
      getThis(){
          console.log(this)
      }
  }

  let person = new Person("Alice",12);
  console.log(person);
  console.log(person.getName());
  person.setName("Jack");
  console.log(person.getName());
  person.getThis();

  /*对象的函数如果不带括号的话，那么函数就相当于对象的属性*/
  let foo =person.getThis;
  /*对象.方法()的方式调用方法那么方法中的this是当前对象
  * 而方法()直接调用的话在方法中的this为window但是在class中默认开启了严格模式
  * 这种情况下this指向为undefined*/
  foo();
  console.log("------------------");
  let obj= new Object();
  foo.apply(obj);
</script>
</body>
</html>